/**
 * 
 */
package de.akabahn.ebd.stw.zdxfc.prs.tco.elemente.signale;

import static de.akabahn.ebd.stw.zdxfc.prs.tco.ZDXFCTcoConstants.VERSCHLUSS_EPA_TEXT;
import static de.akabahn.ebd.stw.zdxfc.prs.tco.ZDXFCTcoConstants.VERSCHLUSS_ZAP_TEXT;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;

import de.akabahn.ebd.stw.zdxfc.prs.tco.elemente.Signal;

/**
 * Implementierung eines Signals in Fahrtrichtung "impair" (Signalmelder ist ueber dem Gleis
 * angeordnet)
 *   
 * @author Peter Eimann
 * @since 1.0
 * @version 1.1
 */
public class SignalImpair extends Signal {

	/**
	 * Intialisierung des Signalmelders mit den uebergebenen Eigenschaften
	 * 
	 * @param id Eindeutige IDs (Haltmelder und Verschlussmelder) des Signals
	 * @param label Signalbezeichnung
	 * @param startX X-Koordinate des Startpunkts des Signals
	 * @param startY Y--Koordinate des Startpunkts des Signals
	 * @param haltMelderFarbe Farbe des Haltmelders (C oder Cv)
	 * @param verschlussZAp Signal hat einen Verschlussmelder Zone d'Approche
	 * @param verschlussEPa Signal hat einen Verschlussmelder Enclenchement parcours
	 */
	public SignalImpair(String[] id, String label, int startX, int startY, Color haltMelderFarbe, boolean verschlussZAp, boolean verschlussEPa) {
		super(id, label, startX, startY, haltMelderFarbe, verschlussZAp, verschlussEPa);
	}

	/**
	 * Zeichnen des Signals mit den Farben des Ausleuchtungszustands der Halt- und
	 * Verschlussmelder
	 * 
	 * @param g Der Grafik-Kontext
	 */
	@Override
	public void paint(Graphics g) {
		g.setColor(Color.BLACK);
		g.drawLine(startX, startY + 3, startX, startY - 12);
		g.drawLine(startX, startY - 12, startX + 10, startY - 12);
		g.drawPolygon(new int[]{startX + 10, startX + 10, startX + 16, startX + 25, startX + 31, startX + 31, startX + 25, startX + 16, startX + 10}, 
					  new int[]{startY - 17, startY - 7, startY - 5, startY - 5, startY - 7, startY - 17, startY - 19, startY - 19, startY - 17}
					  , 9);

		g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12));
		g.drawString(label, startX + 12, startY - 24);
		
		if (haltMelderFarbe != null) {
			g.setColor(getColorHaltmelder());
			g.fillOval(startX + 15, startY - 18, 11, 12);
		}

		if (verschlussZAp || verschlussEPa) {
			g.setColor(getColorVerschlussmelder());
			g.fillOval(startX - 16, startY - 14, 10, 10);

			g.setColor(Color.BLACK);
			g.drawRect(startX - 17, startY - 15, 12, 12);
			g.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11));
			g.drawString(verschlussZAp ? VERSCHLUSS_ZAP_TEXT : VERSCHLUSS_EPA_TEXT, startX - 18, startY - 18);
		}
	}
}
